1. Field of the Invention
The present invention relates to software tools for testing the performance of network applications, and more specifically to software tools for automating the analysis of the results of performance testing of networked applications.
2. Description of the Related Art
With the ever increasing availability of internet access, businesses have come to rely upon network communications, such as the internet, as a means of distributing information about their businesses, as a means of advertising, and in many cases, as a means of providing services to customers and potential customers. For certain businesses, for example those in the field of retail sales via the internet, internet presence is critical to the core operation of the business itself. Businesses which do not rely upon the internet to distribute information about themselves may still use networked systems in order to provide internal access to information within the company and in order to allow efficient cooperation between co-workers located at different sites.
In setting up networked systems, whether for internal use, or for availability via the internet, it is important to test the operation of the system and the applications which run upon it. Not only must the system respond properly to individual requests for information, but any network-available resource should also be capable of operating properly when being subjected to many simultaneous requests. In addition to operating correctly when subjected to multiple requests, it is desirable to determine the speed with which the system, such as a web server, responds to requests as the load upon the system increases. Such testing to determine the ability of such a system to respond under increasing amounts of traffic is referred to as load testing.
A variety of commercial systems exist to assist companies to perform both functionality and load testing of networked systems. Because of the importance of such networked systems, there is a continued need for improved tools for testing such systems, as well as for improved tools for analyzing the results of such testing.
Accordingly, one aspect of the system and methods described herein is to provide a system for monitoring various parameters of a network-accessible server over a period of time during which the server receives requests from one or more client applications, storing values representing these measured parameters in a location accessible to an analysis module, sending these values to the analysis module, identifying statistically significant patterns between various groups of values of these parameters, and using these patterns to suggest to a user likely causes for the identified patterns in the measured parameter values.
In another aspect, a method for automated load testing of a server is disclosed. A series of requests is made of the server by a client process or system, the series of requests and the number of requests being determined according to a testing profile. The performance of the server is measured during the time when the requests are sent to the server, and at least two different metrics associated with the performance of the server are measured during this time. The data representing the measured values of the performance metrics is stored along with an index indicating the time at which the measured performance metric value was taken. The data for each performance metric is analyzed in order to determine at least one significant portion of the data for each performance metric whose value is measured. The data from these significant portions is then compared for each pair of metrics measured, and a degree of correlation is determined for each pair of metrics. The data representing the correlation between the pair of metrics is then presented.
In a different aspect of the method disclosed herein, a method for analyzing the load on a server is described in which at least one client is configured to send a series of requests to a server, and a plurality of parameters of the server are measured during the period of time when the server receives the requests from the client. These values are stored in a series, and the time at which each value was measured is associated with each value. Correlations between the parameters are then identified based upon the stored series of values for the parameters, and those parameters which may be related to one another are selected based upon the correlation between the series of measured values for the parameters.
In an aspect of a system described herein, a load testing analysis system for identifying correlations between various performance parameters of a server comprises a server which is to be test and a communications medium through which requests may be sent to the server, and through which the server may reply to these requests. At least one client process sends a plurality of requests to the server through the communications medium, and a control console receives performance data from the server, the performance data corresponding to a plurality of performance metrics associated with the operation of the server. An analysis module is configured to correlate the data corresponding to the plurality of performance metrics in order to determine any relationship between any pair of the plurality of performance metrics.